package cn.tedu.baking.controller;

import cn.tedu.baking.response.JsonResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@RestController
@RequestMapping("/v1/upload")
public class UploadController {

    @Value("${filePath}")
    private String dirPath;

    @PostMapping("")
    public JsonResult upload(MultipartFile file) throws IOException {
        //得到文件的原始文件名    a.jpg
        String fileName = file.getOriginalFilename();
        //得到后缀  从最后一个.出现的位置截取到最后    .jpg
        String suffix = fileName.substring(fileName.lastIndexOf("."));
        //得到唯一文件名   UUID.randomUUID()得到唯一标识符
        // acff1ab2-2a26-48f4-bda1-5f0809e0d42b.jpg
        fileName = UUID.randomUUID()+suffix;
        System.out.println("文件名:"+fileName);

        //准备日期文件夹路径      d:/files/2023/08/11/xxxx.jpg
        SimpleDateFormat simpleDateFormat =
                new SimpleDateFormat("/yyyy/MM/dd/");
        String datePath = simpleDateFormat.format(new Date());
        // d:/files/2023/08/11/
        File dirFile = new File(dirPath+datePath);
        if (!dirFile.exists()){//如果文件夹不存在则创建
            dirFile.mkdirs();
        }
        //把文件保存到指定路径   异常抛出
        file.transferTo(new File(dirPath+datePath+fileName));
        //     把路径 /2023/08/16/xxxx.jpg 响应给客户端
        return JsonResult.ok(datePath+fileName);
    }
    @PostMapping("/remove")
    public JsonResult remove(String url){
        //删除文件
        new File(dirPath+url).delete();
        return JsonResult.ok();
    }


}
